package zxs.sino.elite.hub.config.security;


import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import zxs.sino.elite.hub.model.model.UserModel;

import java.util.HashSet;

/**
 * 自定义UserDetailsService实现
 * 用于从数据库或其他存储中加载用户信息
 */
@Service
public class CustomUserDetailsService implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // 这里的username可以是用户ID、用户名、手机号等，根据实际情况处理
        // 在我们的系统中，username可能是用户ID字符串，因为我们使用JWT进行认证
        try {
            // 将username转换为Long类型的用户ID
            Long userId = Long.parseLong(username);

            // 创建UserModel对象作为UserDetails
            // 注意：这里简化了UserDetails的实现，实际项目中应该创建完整的UserDetails实现类
            UserModel userModel = new UserModel();
            userModel.setUserId(userId);

            // 在Spring Security中，我们需要返回一个UserDetails对象
            // 这里为了简化，我们直接返回UserModel，但在实际项目中应该实现UserDetails接口
            return new org.springframework.security.core.userdetails.User(
                    username, "", new HashSet<>()
            );
        } catch (NumberFormatException e) {
            throw new UsernameNotFoundException("User not found with username: " + username);
        }
    }
}